package com.ccc.scala.base6_object

import scala.beans.BeanProperty

object Object04_Access {
  def main(args: Array[String]): Unit = {
    // 面向对象 - 类 - 访问权限
    // 访问权限
    /*
        Java：
        1. private      本类
        2. （default）   本包
        3. protected    本类，本包，子类
        4. public       任意

        Scala：
        1. private         => 本类
        2. private[包名]    => 同包，包私有
        3. protected       => 受保护的 同类 子类 没有同包
        4. （default）      => 什么都写就是公共的，没有public关键字
     */
  }

  class Test {
    private val name1: String = "private"
    private[base6_object] val name2: String = "private[]"
    protected val name3: String = "protected"
    val name4: String = "(default)"

    def test(): Unit = {
      println(name1)
      println(name2)
      println(name3)
      println(name4)
    }
  }

  class Test2 {
    def test(): Unit = {
      val test1 = new Test
      // println(test1.name1) // ERROR
      println(test1.name2)
      // println(test1.name3) // ERROR
      println(test1.name4)
    }
  }

}
